Log joining systems may attempt to join one source of secondary events with another source of primary events. In one example, primary events may include search queries, while secondary events may include user clicks on advertisements. Every primary event is uniquely identified by a key, and every secondary event is associated with a key for a corresponding primary event. The purpose of log joining is to locate the corresponding primary event for every secondary event based on the primary key.
To be able to lookup corresponding event from event stream effectively, having a very low-latency during look ups is very important. It becomes much more important and critical for a continuous joining system where the primary events and secondary events are received continuously. The systems described above may only be able to lookup within an interval window of events, and the complexity of these systems may increase multi-fold as the interval increases. Thus, such a configuration may not scale well in a larger system having a continuous stream of events.